package bitetorrent.helper;

/**
 *
 * @author user
 */
public class Converter {

    public static byte[] stringToBytes(String s) {
        int length = s.length();
        int i = 0;
        byte[] bytes = new byte[length];

        for (; i < length; ++i) {
            bytes[i] = (byte) s.charAt(i);
        }

        return bytes;
    }

    public static String bytesToString(byte[] bytes) {
        int i = 0;
        int length = bytes.length;
        StringBuilder sb = new StringBuilder();

        // Read bytes on by one and append to String Builder
        for (; i < length; ++i) {
            sb.append((char) bytes[i]);
        }

        // Return result
        return sb.toString();
    }

    public static byte[] intToBytes(int num) {
        byte[] bytes = new byte[4];

        for (int i = 0; i < 4; ++i) {
            bytes[i] = (byte) (num >> (3 - i) * 8);
        }

        return bytes;
    }

    /**
     * Bagian konversi int dan array byte untuk message.
     * @param bytes yang panjangnya 4 byte
     * @return
     */
    public static int bytesToInt(byte[] bytes) {
        int temp = 0;
        int i;
        int j = 3;
        for (i = 0; i < bytes.length; i++) {
            temp = temp + bytes[i] * (int) Math.pow(255, j);
            j--;
        }
        return temp;
    }

    /**
     * For testing
     * @param args
     */
    public static void main(String[] args) {
        int begin = 10;
        byte[] bytes = intToBytes(begin);
        bytes[0] = bytes[1] = bytes[2] = bytes[3] = 0;
        int end = bytesToInt(bytes);

        System.out.println("begin : " + begin);
        System.out.println("end : " + end);
    }
}
